{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "cff8722a-3614-438d-adc5-277938482875",
   "metadata": {},
   "outputs": [],
   "source": [
    "import json\n",
    "import pandas as pd"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "5661e3b7-682e-4152-8482-e3ab58a1d470",
   "metadata": {},
   "source": [
    "## Export Data as DataFrame"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "5a01db3c-046f-48e2-9e5e-e7ded9f567cc",
   "metadata": {},
   "outputs": [],
   "source": [
    "def load_json(fp):\n",
    "    with open(fp, 'r') as f:\n",
    "        content = json.load(f)\n",
    "    return content"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "1d8a0512-7a9c-4ed9-acb2-a23710f8deb4",
   "metadata": {},
   "outputs": [],
   "source": [
    "api_text_path = 'G:/mashuprecsys/data/api_desc.json'"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "d2028e80-6ed7-4d61-82e4-9f64bcffb8fa",
   "metadata": {},
   "outputs": [],
   "source": [
    "api_text = load_json(api_text_path)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "c6ac92c9-2c17-493f-b414-0c3f9dbcbeab",
   "metadata": {},
   "outputs": [],
   "source": [
    "api_tag = load_json('G:/mashuprecsys/data/api_tags.json')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "5d86993f-9359-4308-9230-f46398b11309",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>api_name</th>\n",
       "      <th>api_text</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>WordPress.org</td>\n",
       "      <td>WordPress.org is home of the installable versi...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>Lulu Publishing</td>\n",
       "      <td>The Lulu Print API allows you to use Lulu.com ...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>EveryTrail</td>\n",
       "      <td>EveryTrail is a platform that allows users to ...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>Lightspeed Retail</td>\n",
       "      <td>Lightspeed Retail API allows developers to int...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>Google Wave</td>\n",
       "      <td>Google Wave is a product that helps users comm...</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "            api_name                                           api_text\n",
       "0      WordPress.org  WordPress.org is home of the installable versi...\n",
       "1    Lulu Publishing  The Lulu Print API allows you to use Lulu.com ...\n",
       "2         EveryTrail  EveryTrail is a platform that allows users to ...\n",
       "3  Lightspeed Retail  Lightspeed Retail API allows developers to int...\n",
       "4        Google Wave  Google Wave is a product that helps users comm..."
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "api_df = pd.DataFrame({'api_name': api_text.keys(), 'api_text': api_text.values()})\n",
    "api_df.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "f47d87bd-d1c8-4e5a-9b6d-d9d7ce50e5df",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>api_name</th>\n",
       "      <th>api_tag</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>EveryTrail</td>\n",
       "      <td>[Travel, Sports, Social, Mapping, Mapping]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>Google Wave</td>\n",
       "      <td>[Social, Widgets, Blogging, Robots, Gadgets]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>Face.com</td>\n",
       "      <td>[Photos, Recognition, Recognition]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>PLoS Search</td>\n",
       "      <td>[Reference, Science]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>Google Calendar</td>\n",
       "      <td>[Calendars, Events]</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "          api_name                                       api_tag\n",
       "0       EveryTrail    [Travel, Sports, Social, Mapping, Mapping]\n",
       "1      Google Wave  [Social, Widgets, Blogging, Robots, Gadgets]\n",
       "2         Face.com            [Photos, Recognition, Recognition]\n",
       "3      PLoS Search                          [Reference, Science]\n",
       "4  Google Calendar                           [Calendars, Events]"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "api_tag_df = pd.DataFrame({'api_name': api_tag.keys(), 'api_tag': api_tag.values()})\n",
    "api_tag_df.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "c85c08f7-4e9b-4a5e-bb6f-eaabc931cfde",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>api_name</th>\n",
       "      <th>api_text</th>\n",
       "      <th>api_tag</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>WordPress.org</td>\n",
       "      <td>WordPress.org is home of the installable versi...</td>\n",
       "      <td>[Blogging, Social, Content Management]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>Lulu Publishing</td>\n",
       "      <td>The Lulu Print API allows you to use Lulu.com ...</td>\n",
       "      <td>[Printing, B2B, Books, eCommerce, Printing, Pu...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>EveryTrail</td>\n",
       "      <td>EveryTrail is a platform that allows users to ...</td>\n",
       "      <td>[Travel, Sports, Social, Mapping, Mapping]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>Lightspeed Retail</td>\n",
       "      <td>Lightspeed Retail API allows developers to int...</td>\n",
       "      <td>[Sales, eCommerce, Engagement, Inventory, Prod...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>Google Wave</td>\n",
       "      <td>Google Wave is a product that helps users comm...</td>\n",
       "      <td>[Social, Widgets, Blogging, Robots, Gadgets]</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "            api_name                                           api_text  \\\n",
       "0      WordPress.org  WordPress.org is home of the installable versi...   \n",
       "1    Lulu Publishing  The Lulu Print API allows you to use Lulu.com ...   \n",
       "2         EveryTrail  EveryTrail is a platform that allows users to ...   \n",
       "3  Lightspeed Retail  Lightspeed Retail API allows developers to int...   \n",
       "4        Google Wave  Google Wave is a product that helps users comm...   \n",
       "\n",
       "                                             api_tag  \n",
       "0             [Blogging, Social, Content Management]  \n",
       "1  [Printing, B2B, Books, eCommerce, Printing, Pu...  \n",
       "2         [Travel, Sports, Social, Mapping, Mapping]  \n",
       "3  [Sales, eCommerce, Engagement, Inventory, Prod...  \n",
       "4       [Social, Widgets, Blogging, Robots, Gadgets]  "
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "api_df = pd.merge(api_df, api_tag_df, on='api_name', how='left')\n",
    "api_df.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "690b6fba-496c-4ce7-86ac-b5aff2c5afa6",
   "metadata": {},
   "outputs": [],
   "source": [
    "api_df.to_pickle('api_df.pkl')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "df527dc2-13f9-4cd5-9c6c-ef3c8d7c3a75",
   "metadata": {},
   "outputs": [],
   "source": [
    "mashup_text = load_json('G:/mashuprecsys/data/mashup_detail.json')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "id": "d49357fe-24da-4ea1-8967-6c3a377529e2",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>mashup_name</th>\n",
       "      <th>mashup_desc</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Twitwhere</td>\n",
       "      <td>{'Related APIs': 'Twitter, Google Earth, Googl...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>Infinitube</td>\n",
       "      <td>{'Related APIs': 'YouTube', 'Categories': 'Vid...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>Hotelplease</td>\n",
       "      <td>{'Related APIs': 'Google Maps', 'Categories': ...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>Donations</td>\n",
       "      <td>{'Related APIs': 'PayPal', 'Categories': 'Soci...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>PetStew.com</td>\n",
       "      <td>{'Related APIs': 'Flickr, Amazon Product Adver...</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   mashup_name                                        mashup_desc\n",
       "0    Twitwhere  {'Related APIs': 'Twitter, Google Earth, Googl...\n",
       "1   Infinitube  {'Related APIs': 'YouTube', 'Categories': 'Vid...\n",
       "2  Hotelplease  {'Related APIs': 'Google Maps', 'Categories': ...\n",
       "3    Donations  {'Related APIs': 'PayPal', 'Categories': 'Soci...\n",
       "4  PetStew.com  {'Related APIs': 'Flickr, Amazon Product Adver..."
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "mashup_text_df = pd.DataFrame({'mashup_name': mashup_text.keys(), 'mashup_desc': mashup_text.values()})\n",
    "mashup_text_df.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "id": "b3a902c2-4061-43c6-a4db-cfbd2b4fcec8",
   "metadata": {},
   "outputs": [],
   "source": [
    "keys = mashup_text_df.iloc[0]['mashup_desc'].keys()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "id": "52fdc623-4bdd-4c42-ab31-a1b6e5063ce8",
   "metadata": {},
   "outputs": [],
   "source": [
    "for k in keys:\n",
    "    mashup_text_df[k] = mashup_text_df['mashup_desc'].map(lambda x: x[k])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "id": "2e0c75cc-53c8-429b-921f-f133dd14d8fe",
   "metadata": {},
   "outputs": [],
   "source": [
    "mashup_df = mashup_text_df.drop('mashup_desc', 1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "id": "8f4b7469-36c2-476b-bde8-9ca6eee49488",
   "metadata": {},
   "outputs": [],
   "source": [
    "mashup_df.to_pickle('mashup_df.pkl')"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "1e930f36-df09-4933-82ee-23f30fdf21d2",
   "metadata": {},
   "source": [
    "## EDA"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "id": "fd718c52-0035-417a-afd6-7ac721bc4b09",
   "metadata": {},
   "outputs": [],
   "source": [
    "mashup_df['Related APIs'] = mashup_df['Related APIs'].map(lambda x: [y.strip() for y in x.split(',')] if x is not None else [])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "id": "ab3a9e62-b3ac-4d9b-ae6b-de857458a54f",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>mashup_name</th>\n",
       "      <th>Related APIs</th>\n",
       "      <th>Categories</th>\n",
       "      <th>URL</th>\n",
       "      <th>Company</th>\n",
       "      <th>Mashup/App Type</th>\n",
       "      <th>Description</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Twitwhere</td>\n",
       "      <td>[Twitter, Google Earth, Google App Engine]</td>\n",
       "      <td>Mapping, Social, Visualizations</td>\n",
       "      <td>http://twitwhere.appspot.com</td>\n",
       "      <td>None</td>\n",
       "      <td>None</td>\n",
       "      <td>This Service is a mashup service using twitter...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>Infinitube</td>\n",
       "      <td>[YouTube]</td>\n",
       "      <td>Video</td>\n",
       "      <td>http://infinitube.net</td>\n",
       "      <td>None</td>\n",
       "      <td>None</td>\n",
       "      <td>Youtube-powered infinitely-playing video viewe...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>Hotelplease</td>\n",
       "      <td>[Google Maps]</td>\n",
       "      <td>Mapping, Travel</td>\n",
       "      <td>http://hosting.gmodules.com/ig/gadgets/file/11...</td>\n",
       "      <td>None</td>\n",
       "      <td>None</td>\n",
       "      <td>Search the prices on 43,000 hotels worldwide. ...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>Donations</td>\n",
       "      <td>[PayPal]</td>\n",
       "      <td>Social, Charity, Charity</td>\n",
       "      <td>http://www.qmpeople.com/helpme/</td>\n",
       "      <td>None</td>\n",
       "      <td>None</td>\n",
       "      <td>Thanks to PayPal, users can donate money to he...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>PetStew.com</td>\n",
       "      <td>[Flickr, Amazon Product Advertising, Google Ma...</td>\n",
       "      <td>Pets, Pets, Classifieds, Video, Photos, eCommerce</td>\n",
       "      <td>http://www.petstew.com/index.html</td>\n",
       "      <td>None</td>\n",
       "      <td>None</td>\n",
       "      <td>A pet site providing classifieds, adoptions, p...</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   mashup_name                                       Related APIs  \\\n",
       "0    Twitwhere         [Twitter, Google Earth, Google App Engine]   \n",
       "1   Infinitube                                          [YouTube]   \n",
       "2  Hotelplease                                      [Google Maps]   \n",
       "3    Donations                                           [PayPal]   \n",
       "4  PetStew.com  [Flickr, Amazon Product Advertising, Google Ma...   \n",
       "\n",
       "                                          Categories  \\\n",
       "0                    Mapping, Social, Visualizations   \n",
       "1                                              Video   \n",
       "2                                    Mapping, Travel   \n",
       "3                           Social, Charity, Charity   \n",
       "4  Pets, Pets, Classifieds, Video, Photos, eCommerce   \n",
       "\n",
       "                                                 URL Company Mashup/App Type  \\\n",
       "0                       http://twitwhere.appspot.com    None            None   \n",
       "1                              http://infinitube.net    None            None   \n",
       "2  http://hosting.gmodules.com/ig/gadgets/file/11...    None            None   \n",
       "3                    http://www.qmpeople.com/helpme/    None            None   \n",
       "4                  http://www.petstew.com/index.html    None            None   \n",
       "\n",
       "                                         Description  \n",
       "0  This Service is a mashup service using twitter...  \n",
       "1  Youtube-powered infinitely-playing video viewe...  \n",
       "2  Search the prices on 43,000 hotels worldwide. ...  \n",
       "3  Thanks to PayPal, users can donate money to he...  \n",
       "4  A pet site providing classifieds, adoptions, p...  "
      ]
     },
     "execution_count": 34,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "mashup_df.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "id": "5e949046-10f9-4ecb-8a1c-6c972fe31dbf",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>mashup_name</th>\n",
       "      <th>Related APIs</th>\n",
       "      <th>Categories</th>\n",
       "      <th>URL</th>\n",
       "      <th>Company</th>\n",
       "      <th>Mashup/App Type</th>\n",
       "      <th>Description</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Twitwhere</td>\n",
       "      <td>[Twitter, Google Earth, Google App Engine]</td>\n",
       "      <td>Mapping, Social, Visualizations</td>\n",
       "      <td>http://twitwhere.appspot.com</td>\n",
       "      <td>None</td>\n",
       "      <td>None</td>\n",
       "      <td>This Service is a mashup service using twitter...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>PetStew.com</td>\n",
       "      <td>[Flickr, Amazon Product Advertising, Google Ma...</td>\n",
       "      <td>Pets, Pets, Classifieds, Video, Photos, eCommerce</td>\n",
       "      <td>http://www.petstew.com/index.html</td>\n",
       "      <td>None</td>\n",
       "      <td>None</td>\n",
       "      <td>A pet site providing classifieds, adoptions, p...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>Audio Transcription</td>\n",
       "      <td>[US Yellow Pages, Yahoo My Web Search]</td>\n",
       "      <td>Transcription, Accessibility</td>\n",
       "      <td>http://transcriptionplace.com/audio-book-trans...</td>\n",
       "      <td>None</td>\n",
       "      <td>None</td>\n",
       "      <td>Transcription supports accessibility. Persons ...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>CityClash</td>\n",
       "      <td>[Google Maps, Google Cloud Translation, Google...</td>\n",
       "      <td>Social, Ratings, Ratings, Travel, Real Estate,...</td>\n",
       "      <td>http://www.cityclash.org/</td>\n",
       "      <td>None</td>\n",
       "      <td>None</td>\n",
       "      <td>City ratings and rankings by people.</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>Moveable History</td>\n",
       "      <td>[Wikipedia, Tropo Scripting, Voxeo, Google Lat...</td>\n",
       "      <td>Mobile, Voice, Mapping, History</td>\n",
       "      <td>http://moveable-weather.appspot.com/history_demo</td>\n",
       "      <td>None</td>\n",
       "      <td>None</td>\n",
       "      <td>This is the 3rd in the \"moveable\" series, that...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6056</th>\n",
       "      <td>GoCrowdless</td>\n",
       "      <td>[Google Maps, Foursquare]</td>\n",
       "      <td>eCommerce, New York City, Mapping, Data, Social</td>\n",
       "      <td>http://www.gocrowdless.com</td>\n",
       "      <td>None</td>\n",
       "      <td>None</td>\n",
       "      <td>Go Crowdless uses Foursquare check-ins to help...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6061</th>\n",
       "      <td>SMSMyBus</td>\n",
       "      <td>[Google App Engine, Twilio, Twilio SMS]</td>\n",
       "      <td>Transportation, Real Time, Mobile, Transportat...</td>\n",
       "      <td>http://www.smsmybus.com</td>\n",
       "      <td>None</td>\n",
       "      <td>None</td>\n",
       "      <td>A mobile phone app for finding real-time bus a...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6062</th>\n",
       "      <td>AMEE Location Footprinter</td>\n",
       "      <td>[AMEE, Foursquare]</td>\n",
       "      <td>Environment, Mapping, Travel</td>\n",
       "      <td>http://alf.ameeapps.com/</td>\n",
       "      <td>None</td>\n",
       "      <td>None</td>\n",
       "      <td>AMEE Location Footprinter estimates the enviro...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6064</th>\n",
       "      <td>Shared Playlists</td>\n",
       "      <td>[Last.fm, Spotify Metadata]</td>\n",
       "      <td>Music, Music</td>\n",
       "      <td>http://www.sharedplaylists.com/</td>\n",
       "      <td>None</td>\n",
       "      <td>None</td>\n",
       "      <td>Shared Playlists is currently a site only for ...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6065</th>\n",
       "      <td>Mapanui</td>\n",
       "      <td>[Google Maps, Whereis]</td>\n",
       "      <td>Australian, Mapping</td>\n",
       "      <td>http://www.mapanui.com</td>\n",
       "      <td>None</td>\n",
       "      <td>None</td>\n",
       "      <td>Mapanui - a pocket map for your browser. Austr...</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>2758 rows × 7 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                    mashup_name  \\\n",
       "0                     Twitwhere   \n",
       "4                   PetStew.com   \n",
       "5           Audio Transcription   \n",
       "6                     CityClash   \n",
       "7              Moveable History   \n",
       "...                         ...   \n",
       "6056                GoCrowdless   \n",
       "6061                   SMSMyBus   \n",
       "6062  AMEE Location Footprinter   \n",
       "6064           Shared Playlists   \n",
       "6065                    Mapanui   \n",
       "\n",
       "                                           Related APIs  \\\n",
       "0            [Twitter, Google Earth, Google App Engine]   \n",
       "4     [Flickr, Amazon Product Advertising, Google Ma...   \n",
       "5                [US Yellow Pages, Yahoo My Web Search]   \n",
       "6     [Google Maps, Google Cloud Translation, Google...   \n",
       "7     [Wikipedia, Tropo Scripting, Voxeo, Google Lat...   \n",
       "...                                                 ...   \n",
       "6056                          [Google Maps, Foursquare]   \n",
       "6061            [Google App Engine, Twilio, Twilio SMS]   \n",
       "6062                                 [AMEE, Foursquare]   \n",
       "6064                        [Last.fm, Spotify Metadata]   \n",
       "6065                             [Google Maps, Whereis]   \n",
       "\n",
       "                                             Categories  \\\n",
       "0                       Mapping, Social, Visualizations   \n",
       "4     Pets, Pets, Classifieds, Video, Photos, eCommerce   \n",
       "5                          Transcription, Accessibility   \n",
       "6     Social, Ratings, Ratings, Travel, Real Estate,...   \n",
       "7                       Mobile, Voice, Mapping, History   \n",
       "...                                                 ...   \n",
       "6056    eCommerce, New York City, Mapping, Data, Social   \n",
       "6061  Transportation, Real Time, Mobile, Transportat...   \n",
       "6062                       Environment, Mapping, Travel   \n",
       "6064                                       Music, Music   \n",
       "6065                                Australian, Mapping   \n",
       "\n",
       "                                                    URL Company  \\\n",
       "0                          http://twitwhere.appspot.com    None   \n",
       "4                     http://www.petstew.com/index.html    None   \n",
       "5     http://transcriptionplace.com/audio-book-trans...    None   \n",
       "6                             http://www.cityclash.org/    None   \n",
       "7      http://moveable-weather.appspot.com/history_demo    None   \n",
       "...                                                 ...     ...   \n",
       "6056                         http://www.gocrowdless.com    None   \n",
       "6061                            http://www.smsmybus.com    None   \n",
       "6062                           http://alf.ameeapps.com/    None   \n",
       "6064                    http://www.sharedplaylists.com/    None   \n",
       "6065                             http://www.mapanui.com    None   \n",
       "\n",
       "     Mashup/App Type                                        Description  \n",
       "0               None  This Service is a mashup service using twitter...  \n",
       "4               None  A pet site providing classifieds, adoptions, p...  \n",
       "5               None  Transcription supports accessibility. Persons ...  \n",
       "6               None               City ratings and rankings by people.  \n",
       "7               None  This is the 3rd in the \"moveable\" series, that...  \n",
       "...              ...                                                ...  \n",
       "6056            None  Go Crowdless uses Foursquare check-ins to help...  \n",
       "6061            None  A mobile phone app for finding real-time bus a...  \n",
       "6062            None  AMEE Location Footprinter estimates the enviro...  \n",
       "6064            None  Shared Playlists is currently a site only for ...  \n",
       "6065            None  Mapanui - a pocket map for your browser. Austr...  \n",
       "\n",
       "[2758 rows x 7 columns]"
      ]
     },
     "execution_count": 37,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "mashup_df[mashup_df['Related APIs'].map(len) > 1]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "6aebd76b-fcc3-4cd7-b8bd-07db388c2cad",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.10"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
